#!/bin/env ruby
# encoding: utf-8
class CtPhong < ActiveRecord::Base
  attr_accessible :phong_id, :tai_san_id, :so_luong, :nam_sd, :nguoi_sd_id, :tinh_trang, :ngay_cap_nhat
  belongs_to  :phong, :foreign_key => "phong_id" , :class_name => "Phong"
  belongs_to  :tai_san, :foreign_key => "tai_san_id", :class_name => "TaiSan"
  belongs_to  :nhan_vien, :foreign_key => "nguoi_sd_id", :class_name => "NhanVien"

  # hàm lấy danh sách tài sản trong phòng theo loại tài sản
  def self.getAllbyLoai(loaiid)
    ctp = CtPhong.joins(:tai_san).where("tai_sans.LoaiT_id = ?", loaiid)
    return ctp_hash = ctp.collect{ |c| {:TenTS => c.tai_san.TenTS, :Phong => c.phong.MaPhong, :Ngay => c.ngay_cap_nhat, :TinhTrang => c.tinh_trang, :SoLuong => c.so_luong,} }
  end
  # hàm lấy danh sách tài sản trong phòng theo tài sản
  def self.getAllbyTS(tsid)
    ctp = CtPhong.joins(:tai_san).where(:tai_san_id => tsid)
    return ctp_hash = ctp.collect{ |c| {:Phong => c.phong.TenPhongg, :Ngay => c.ngay_cap_nhat, :TinhTrang => c.tinh_trang, :SoLuong => c.so_luong} }
  end
  # hàm lấy danh sách tài sản trong phòng theo phòng, loại tài sản và tình trạng
  def self.getAllbyPhong(pid,lid,tinhtrang)
    ctp = CtPhong.where(:phong_id => pid)
    if lid != nil
      ctp = ctp.joins(:tai_san).where("tai_sans.LoaiT_id = ?",lid)
    end
    if tinhtrang != nil
      ctp = ctp.where("tinh_trang LIKE ?",tinhtrang)
    end
    return ctp_hash = ctp.collect{|c| {:id => c.tai_san.id, :TenTS => c.tai_san.TenTS, :Ngay => c.ngay_cap_nhat, :TinhTrang => c.tinh_trang, :SoLuong => c.so_luong}}
  end
  # hàm lấy danh sách tài sản trong phòng theo người quản lí phòng
  def self.getAllbyQL(nvid)
    ctp = CtPhong.joins(:tai_san).where(:nguoi_sd_id => nvid)
    return ctp_hash = ctp.collect{ |c| {:MaTS => c.tai_san.MaTS, :TenTS => c.tai_san.TenTS, :Ngay => c.ngay_cap_nhat } }
  end
  # hàm lấy danh sách số lượng các loại tài sản trong phòng
  def self.getSLLoai(pid)
    lts = LoaiT.all
    ctp = CtPhong.where(:phong_id => pid)
    return ctp_hash = lts.collect { |c| {:id => c.id, :TenLoai => c.TenLoai, :SoLuong => ctp.joins(:tai_san).where("tai_sans.LoaiT_id = ?", c.id).sum("so_luong")}}
  end
  # hàm lấy số lượng tài sản trong phòng và số lượng tài sản đó chưa sử dụng
  def self.getSLTaiSan(pid,tsid)
    slsd = 0
    slct = 0
    slds = 0
    slcl = TaiSan.where(:id => tsid).first().SLuong
    if (ctp = CtPhong.where(:phong_id => pid,:tai_san_id => tsid)) != []
      slsd = ctp.sum(:so_luong)
      if ctp.where('tinh_trang LIKE ? ', 'Tot') != []
        slct = ctp.where('tinh_trang LIKE ? ', 'Tot').first().so_luong
      end
      slds = slsd - slct
      if ctp.where('tinh_trang LIKE ? ', 'Thanh li') != []
        slds = slsd - slct - ctp.where('tinh_trang LIKE ? ', 'Thanh li').first().so_luong
      end
    end
    if CtPhong.where(:tai_san_id => tsid) != nil 
       slcl -= CtPhong.where(:tai_san_id => tsid).sum(:so_luong)
    end

    return hash = {:slsd => slsd, :slct => slct, :slds => slds, :slcl => slcl}
  end
  # hàm thêm tài sản vào phòng
  def self.addTaiSan(pid,tsid,soluong)
    ctp = CtPhong.where('phong_id = ? AND tai_san_id = ? AND tinh_trang LIKE ? ',pid,tsid,"%#{'Tot'}%")
    if ctp != []
      tst  = ctp.first()
      tst.so_luong += soluong.to_i
      tst.ngay_cap_nhat = Date.today()
      tst.save!
    else
      tst = CtPhong.new
      tst.phong_id = pid
      tst.tai_san_id = tsid
      tst.so_luong = soluong.to_i
      tst.ngay_cap_nhat = Date.today()
      tst.tinh_trang = 'Tốt'
      tst.save!
    end
  end
  #Hàm chuyển tài sản sang phòng khác
  def self.ChuyenTS(tsid, p1id, p2id, soluong)
    ct = CtPhong.where(:tai_san_id => tsid)
    ts1 = ct.where(:phong_id => p1id).first()
    ts1.so_luong -= soluong.to_i
    ts1.save!
    ts2 = ct.where(:phong_id => p2id).first()
    if ts2 != nil
      ts2.so_luong += soluong.to_i
    else
      ts2 = ct.where(:phong_id => p2id).new
      ts2.ngay_cap_nhat = Date.today()
      ts2.so_luong = soluong.to_i
      ts2.save!
    end
  end

  # hàm thay đổi tình trạng tài sản trong phòng
  def self.ThayDoiTT(pid,tsid,tinhtrang1,tinhtrang2,soluong)
    ctp = CtPhong.where(:phong_id => pid, :tai_san_id => tsid)
    ts1 = ctp.where('tinh_trang LIKE ? ', tinhtrang1).first()
    ts1.so_luong -= soluong.to_i
    ts1.ngay_cap_nhat = Date.today()
    ts1.save!
    ts2 = ctp.where('tinh_trang LIKE ? ', tinhtrang2).first()
    if ts2 != nil
      ts2.so_luong += soluong.to_i
      ts2.ngay_cap_nhat = Date.today()
      ts2.save!
    else
      ts2 = ctp.new
      ts2.so_luong = soluong.to_i
      ts2.tinh_trang = tinhtrang2
      ts2.ngay_cap_nhat = Date.today()
      ts2.save!
    end
  end
end
